/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package grafox.Domain;

import java.util.LinkedList;
import java.util.List;

/**
 *
 * @author admindev
 */
public abstract class ObjectX implements Comparable<ObjectX>{

    private static long idGenereted;

    public ObjectX(long id, String nome) {
        this.propriedades = new LinkedList<>();
        this.id = id;
        this.nome = nome;
    }

    public ObjectX(String nome) {
        this.propriedades = new LinkedList<>();
        this.id = ++idGenereted;
        this.nome = nome;
    }
    protected long id;
    protected String nome;
    protected List<Object> propriedades;

    public long getId() {
        return id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public List<Object> getPropriedades() {
        return propriedades;
    }

    public void addPropriedade(Object propriedade) {
        this.propriedades.add(propriedade);
    }
    
    public void addAllPropriedades(List<Object> propriedades)
    {
        this.propriedades.addAll(propriedades);
    }

    @Override
    public int compareTo(ObjectX t) {
       
        if(this.nome.compareTo(t.nome)>0)
            return Long.compare(this.id,t.id);
        else
            return this.nome.compareTo(t.nome);
        
        
    }
    
}
